package com.start.shop.modules.repository.dao;
 
import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.start.shop.modules.repository.entity.Order;



@Repository
public interface OrderDao { 

	/**
	 * 插入订单 
	 */
	void insert(Order order);

	/**
	 * 根据订单号查询订单
	 */
	Order selectOrderByOrderNo(@Param("userId") int userId, @Param("orderNo")String orderNo);

	/**
	 * 更新订单为支付中
	 */
	int updatePayStatusToPaying(@Param("userId") int userId, @Param("orderNo")String orderNo);
	
	/**
	 * 更新支付成功
	 */
	int updatePayingToSuccess(@Param("userId") int userId, @Param("orderNo")String orderNo, @Param("payNo") String payNo);
	
	/**
	 * 取消订单
	 */
	int updateOrderToCancel(@Param("userId") int userId, @Param("orderNo")String orderNo);
	
	/**
	 * 订单发货
	 */
	void updateDelivery(@Param("userId") int userId, @Param("orderNo") String orderNo, @Param("deliveryNo") String deliveryNo);
	
	/**
	 * 根据订单状态进行订单查询
	 */
	List<Order> selectOrderByStatus(@Param("userId") int userId, @Param("orderStatus") String orderStatus,
									@Param("payStatus")String payStatus, @Param("orderChannel") String orderChannel);

	
	/**
	 * 订单确认收货
	 */
	void updateOrderConfirm(@Param("userId") int userId, @Param("orderNo")String orderNo);

	
	/**
	 * 查询过期未支付的订单 前10条
	 */ 
	List<Order> selectExpireOrder();

	/**
	 * 查询发货14天未确认的订单 前10条
	 */ 
	List<Order> selectConfirmOrder();

	/**
	 * 取消订单
	 */
	int cancel(@Param("userId") int userId, @Param("orderNo")String orderNo);


}
